Cold Observables এবং Hot Observables হল RxJava-এর দুটি গুরুত্বপূর্ণ ধারণা, যা Observable এর আচরণের উপর ভিত্তি করে বিভক্ত। এদের প্রধান পার্থক্য হল ডেটা স্ট্রিম কিভাবে প্রেরিত হয় এবং সাবস্ক্রাইবারদের (Subscribers) সাথে কিভাবে আচরণ করে।
Cold Observable:
- ডেটা স্ট্রিম শুধুমাত্র সাবস্ক্রাইব করার পর শুরু হয়।
যখন কেউ Observable-এ সাবস্ক্রাইব করে, তখন Observable ডেটা এমিট করা শুরু করে। - প্রতিটি সাবস্ক্রাইবার নতুন ডেটা স্ট্রিম পায়।
- Cold Observable-এর ডেটা static থাকে, অর্থাৎ প্রত্যেক সাবস্ক্রাইবারের জন্য ডেটা পুনরায় এমিট হয়।
- উদাহরণ: API কল, ডেটাবেস কোয়েরি, বা ফাইল রিড অপারেশন।
উদাহরণ:
import io.reactivex.Observable;
public class ColdObservableExample {
public static void main(String[] args) {
// Create a Cold Observable
Observable<Integer> observable = Observable.just(1, 2, 3, 4);
// First Subscriber
observable.subscribe(item -> System.out.println("Subscriber 1: " + item));
// Second Subscriber
observable.subscribe(item -> System.out.println("Subscriber 2: " + item));
}
}
আউটপুট:
Subscriber 1: 1
Subscriber 1: 2
Subscriber 1: 3
Subscriber 1: 4
Subscriber 2: 1
Subscriber 2: 2
Subscriber 2: 3
Subscriber 2: 4
Hot Observable:
- ডেটা স্ট্রিম সাবস্ক্রাইবারদের জন্য অপেক্ষা না করে চলতে থাকে।
Observable ডেটা এমিট করতে শুরু করে, এমনকি যদি কোনো সাবস্ক্রাইবার না থাকে। - নতুন সাবস্ক্রাইবাররা তখন থেকেই ডেটা পেতে শুরু করে যখন তারা সাবস্ক্রাইব করে। আগে প্রেরিত ডেটা তারা পায় না।
- Hot Observable সাধারণত লাইভ ডেটা বা event-driven operations-এর জন্য ব্যবহৃত হয়।
- উদাহরণ: Mouse clicks, Keyboard events, বা WebSocket connections।
উদাহরণ:
import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;
public class HotObservableExample {
public static void main(String[] args) {
// Create a Hot Observable using PublishSubject
PublishSubject<Integer> hotObservable = PublishSubject.create();
// First Subscriber subscribes
hotObservable.subscribe(item -> System.out.println("Subscriber 1: " + item));
// Emit some data
hotObservable.onNext(1);
hotObservable.onNext(2);
// Second Subscriber subscribes
hotObservable.subscribe(item -> System.out.println("Subscriber 2: " + item));
// Emit more data
hotObservable.onNext(3);
hotObservable.onNext(4);
}
}
আউটপুট:
Subscriber 1: 1
Subscriber 1: 2
Subscriber 1: 3
Subscriber 2: 3
Subscriber 1: 4
Subscriber 2: 4
Cold এবং Hot Observable-এর প্রধান পার্থক্য:
| বৈশিষ্ট্য | Cold Observable | Hot Observable |
|---|---|---|
| ডেটা স্ট্রিম শুরু | সাবস্ক্রিপশন-এর পরে শুরু হয়। | সাবস্ক্রিপশন-এর আগে থেকেই চলমান। |
| প্রত্যেক সাবস্ক্রাইবারের জন্য ডেটা | নতুন করে ডেটা এমিট হয়। | সাবস্ক্রাইব করার সময় থেকে ডেটা পায়। |
| ব্যবহারক্ষেত্র | স্ট্যাটিক বা ফিক্সড ডেটার জন্য। | লাইভ ডেটা স্ট্রিমের জন্য। |
| উদাহরণ | API calls, Database queries। | Mouse clicks, WebSocket data। |
Hybrid Observables:
কিছু Observable, যেমন ConnectableObservable, Hot এবং Cold এর মিশ্রণ হিসাবে কাজ করতে পারে। এগুলি .publish() এবং .connect() এর মাধ্যমে কনফিগার করা যায়।
উপসংহার:
Cold Observable ডেটা পুনরায় তৈরি করতে পারে এবং নির্ধারিত ডেটা এমিট করার জন্য কার্যকর, যেখানে Hot Observable বাস্তব-সময়ের ডেটা বা ইভেন্ট পরিচালনার জন্য আদর্শ।
Read more